package sorting;


import java.util.Arrays;

public class BubbleSort {
    /**
     * //冒泡排序
     * 比较相邻的元素。如果第一个比第二个大，就交换它们两个；
     * 对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对，这样在最后的元素应该会是最大的数；
     * 针对所有的元素重复以上的步骤，除了最后一个；
     * 重复步骤1~3，直到排序完成。
     * 代码实现：两次循环 注意内层循环次数 是要递减得 也就每次减去排好得 即length-i
     */

    public static void main(String[] args) {
        int[] targetArr = {7, 5, 10, 8, 22, 16, 60, 34};
        System.out.println(Arrays.toString(bubbleSort(targetArr)));
    }

    public static int[] bubbleSort(int[] targetArr) {
        int[] arr = Arrays.copyOf(targetArr, targetArr.length);

        if (arr.length == 0) {
            return arr;
        }

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {////***核心代码：注意这里得循环次数 是递减得 要减去每次排好得 j < arr.length - i - 1;

                if (arr[j] > arr[j + 1]) {
                    swap(arr, j + 1, j);
                }
            }
        }
        return arr;
    }

    public static void swap(int[] array, int i, int j) {
        int temp = array[j];
        array[j] = array[i];
        array[i] = temp;
    }
}
